package org.zjt.lock;

import java.util.concurrent.locks.AbstractQueuedSynchronizer;

/**
 * AQS 组件：
 *
 *   volatile int stat:  lock 资源标识
 *
 *   node linked queue: 等待的链表队列，用来保存等待资源的线程信息。利用最后节点的CAS来追加node。
 *
 *   parkAndCheckInterrupt ： 未得到status资源，并添加到linked中后，阻塞当前线程。unsafe。park，并检查是否呗中断。
 *                            park()进入waiting状态，等待unpark()或interrupt()唤醒自己；
 *
 *   release ： 将status资源释放，并唤醒linked中的等待队列里的其他线程来获取资源。
 *
 *
 *   共享模式：
 *
 *      Semaphore/CountDownLatch   利用status数字加减结果和0比较，来实现资源的锁定。
 *
 */
public class AqsLock {
    public static void main(String[] args) {

    }
}
